<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script>
        //创建一个对象
        var obj = {
            name:"悟空",
            age:18,
            gender:"男",
            sayName:function(){
                alert("我的名字是："+this.name);
            }
        }

          var obj1 = {
            name:"八戒",
            age:28,
            gender:"男",
            sayName:function(){
                alert("我的名字是："+this.name);
            }
        }

          var obj2 = {
            name:"沙僧",
            age:38,
            gender:"男",
            sayName:function(){
                alert("我的名字是："+this.name);
            }
        }

        //--------上面的创建对象的方式太麻烦了，重复的代码太多了-------------------

        //使用工厂方法创建对象

        function createPerson(name,age,gender){
            var obj = new Object();
            //向对象中添加属性
            obj.name=name;
            obj.age=age;
            obj.gender=gender;
            obj.sayName=function(){
                alert("我的名字是："+this.name);
            }
            //返回对象
            return obj;
        }
            //创建狗对象
            function createDog(name,age){
            var obj = new Object();
            //向对象中添加属性
            obj.name=name;
            obj.age=age;
            obj.sayHello=function(){
                alert("汪汪汪~~"+this.name);
            }
            //返回对象
            return obj;
        }

        var obj3 = createPerson("张三",18,'男');
        var obj4 = createPerson("李四",20,'男');
        var obj5 = createPerson("王五",25,'男');

        // console.log(obj3);
        // console.log(obj4);
        // console.log(obj5);

        // obj3.sayName();
        // obj4.sayName();
        // obj5.sayName();

        /**
         * 使用工厂方法创建对象，使用的构造函数都是Object
         *  所以创建对象都是Object这个类型
         *  就导致我们无法区分多种不同类型的对象
         */
        //创建一个狗对象
        var dog=createDog("旺财",2);

        console.log(dog);
        console.log(obj5);


    </script>
</head>
<body>
    
</body>
</html>